技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
28
0
Software Development
RISC-V 與處理器之架構學習及應用
系列 第
28
篇
[Day28] CALL: Loader (4/5)
16th鐵人賽
凱特
2024-10-12 01:23:37
374 瀏覽
分享至
1.
Loader 的作用
:
輸入
:Loader 的輸入是已編譯並連結好的可執行檔案(例如,
a.out
for RISC-V)。
輸出
:Loader 的輸出是程式開始執行,將可執行檔載入記憶體並啟動程式。
可執行檔
:可執行檔存儲於磁碟上,當執行一個程式時,Loader 將其載入記憶體,並開始運行該程式。
操作系統角色
:實際上,Loader 是作業系統(OS)的一部分,負責將程式載入記憶體。載入程式是 OS 的一項任務。
2.
Loader 的具體功能
:
將程式載入新的位址空間
:
Loader 首先讀取可執行檔案的文件頭,以了解文本段和數據段的大小。
它會創建一個新的位址空間,該空間足夠存儲文本段、數據段以及一個堆疊段。
Loader 會將可執行文件中的指令和數據複製到新的位址空間中,並將傳遞給程式的參數複製到堆疊上。
初始化機器暫存器
:
大多數的暫存器會被清除,並且
堆疊指標(stack pointer,sp)
會被指向堆疊的第一個空閒位址。
跳轉到啟動程式
:
Loader 會跳轉到啟動程式(start-up routine),該程式會執行以下操作:
將傳遞給程式的參數從堆疊中複製到暫存器中,並設置程式計數器(PC)。
如果主程式(main routine)執行完畢,則通過 exit 系統呼叫終止程式。
3.
Loader 的詳細工作流程
:
讀取可執行檔案頭
:Loader 從可執行檔案中提取文本段和數據段的大小和位置,並在記憶體中分配相應的空間。
創建位址空間
:Loader 創建一個新的記憶體位址空間,並確保它有足夠的空間來存儲程式的文本、數據段,以及一個堆疊段。
複製數據
:將程式的指令和數據從可執行檔案中複製到位址空間。Loader 也會將傳遞給程式的參數放入堆疊中,以便程式能夠訪問這些參數。
初始化暫存器
:堆疊指標
sp
被初始化為堆疊的起始位址,其他暫存器則被清零。
跳轉到程式的啟動地址
:Loader 將程式的控制權交給其啟動程式,並設置程式計數器(PC)以開始執行程式。如果主程式返回,Loader 會執行系統呼叫來結束程式的執行。
留言
追蹤
檢舉
上一篇
[Day27] CALL: Linker (3/5)
下一篇
[Day29] 總結與流程 (5/5)
系列文
RISC-V 與處理器之架構學習及應用
共
30
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
26
[Day26] CALL: Assembler (2/5)
27
[Day27] CALL: Linker (3/5)
28
[Day28] CALL: Loader (4/5)
29
[Day29] 總結與流程 (5/5)
30
[Day30] 從抽象層次到效能改善
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19776
篇
完賽人數
529
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
碩士學歷能幫助我突破職涯天花板嗎?
群輝NAS套件Docker部署Outline
維護合約的合理性
如何讓Windows 11 Professional 開啟Synology DS925+網路芳鄰的速度加快?
librenms 25.4.0 重開機都要重新設定
Librenms ssl憑證檢查 通知方式
Exchange EMS掛掉導致Q信(2016)
熱門回答
碩士學歷能幫助我突破職涯天花板嗎?
維護合約的合理性
群輝NAS套件Docker部署Outline
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
librenms 25.4.0 重開機都要重新設定
熱門文章
資安入門與實務應用介紹 29:智能合約漏洞與加密貨幣詐騙案例分析
資安入門與實務應用介紹 28:APT(高階持續性威脅)攻擊解析與防範方法
Day 7:防火牆配置與流量過濾(Firewall Configuration and Traffic Filtering)
C++開啟資料夾及檔案的方法
打造你的第一個 MCP Server:從概念到實作
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}